1. Technical Field
The present disclosure relates to software analysis and more specifically to software code defect detection and correction.
2. Introduction
As part of the development process of software, the software code is analyzed to find and repair defects. One such approach used by developers is static program analysis. Static program analysis uses many checkers to discover a very large number of programming issues. Static analysis, however, is known to identify many portions of code that might initially appear erroneous but in fact are defect free. These are commonly known as false-positives. As each potential defect requires significant manual effort to process, understand, and correct, software engineers often spend a lot of time searching for and analyzing false positives that are not actual problems while other errors and flaws can remain. Because of this false-positive issue, the static analysis approach is seldom put to its full usage by many software development teams.
Furthermore, if one defect is found and corrected, more of the same are likely to exist in the same codebase or in other code from the same author. The remaining defects, although possibly similar to those previously found and corrected will also need to be located and corrected using the same process. Thus, fixing the same problems reoccurring in different places in the code can unnecessarily require the same amount of effort as fixing it the first time, namely requiring some amount of human developer attention.
Accordingly, there is a perceived need for a software analysis tool that more appropriately focuses human efforts on potential defects identified in a static analysis process as being an actual defect. By prioritizing potential defects, a developer can spend more attention on identified defects that have a higher likelihood of being real (i.e., not a false-positive). Further, there is also a perceived need for a software analysis tool that can automatically apply fixes to other portions of the code identified as having a similar defect as one previously confirmed and corrected. Such a solution has the potential of reducing the time spent by a developer in repairing software code defects.